// 定义state
export const state = () => {
    return {
        userinfo: {
            token: '',
            user: {}
        },
        // 用来存储回跳的页面路径
        backurl: ''

    }
}
// 定义mutations
export const mutations = {
    // 有一个默认参数state，通过state就可以获取在state中定义的成员
    // 第二个参数是你调用这个方法时所传递的数据，可以是任意类型的数据
    setBackurl(state, data) {
        state.backurl = data
    },
    // 有一个默认参数state
    setUserInfo(state, data) {
        state.userinfo.token = data.token
        state.userinfo.user = data.user
    },
    // 清除用户数据
    cleanUserInfo(state) {
        state.userinfo = {};
    }
}
// 定义 actions
export const actions = {
    // 这个函数中可以来执行异步操作，拿到异步操作的结果，
    // 调用mutaitons中的方法，达到为state中的成员赋值的目的
    setUserInfoAction(store, data) {
        // store就是当前的仓库对象，里面的commot函数可以调用mutaitons中的成员
        // 调用mutations中的成员    
        store.commit('setUserInfo', data)
    },
    // 将登陆操作封装到actions中
    loginAction({ commit }, canshu) {
        // 异步请示
        return this.$axios({
            method: 'post',
            url: "/accounts/login",
            data: canshu
        }).then(res => {
            // 如果在user仓库外部调用actions或者mutations中的方法，则需要使用this.$store
            // 如果在同一个仓库中进行方法的调用，则不需要再写this.$store了
            // 同时在同一个仓库中调用方法，也不需要再指定仓库，默认就是当前仓库
            // this.$store.commit('user/setUserInfo',res.data)
            commit('setUserInfo', res.data)
            // 如果在外围还需要使用这个值，则必须返回
            return res
        })
        // .catch(err => {
        //     return err
        // })
    }
}